package praca.gra;

import praca.framework.TextureGL;
import praca.framework.Vertices;
import praca.interfejsy.Game;
import praca.interfejsy.Screen;
import praca.interfejsy.Texture;

public class Ex02Textures extends Screen{

	Vertices trollVert = new Vertices(100,100,true);
	Vertices rectVert = new Vertices(100,200,false);
	Texture troll;
	
	public Ex02Textures(Game game) {
		super(game);
		
		
	}

	@Override
	public void update(float deltaTime) {
		/*
		 * Rysowanie prostych ksztaltow - w tej chwili jedynie prostokat
		 * oraz rysowanie tekstur
		 * UWAGI - tekstury musza miec rozmiary o potegach dwojki, np.
		 * 32x32 , 32x256, 128x128 itp. (jako plik graficzny)
		 * Rozmiar tekstury lub ksztaltu odbywa sie przy pomocy klasy Vertices
		 * nazlezy unikac tworzenia obiektow w metodzie update!!!! tak aby garbage collector
		 * nie byl wywolany ani raz przez czas dzialania aplikacji (jest to sygnalizowane w LogCat)
		 * 
		 * 
		 * Polozenie poczatkowe kazdego obiektu jest takie ze ich srodek znajduje sie w punkcie 0,0
		 * Jest to uzasadnione gdy chcemy obracac obiekty wzgledem osi Z
		 * 
		 * Aby narysowac cos w innym miejscu uzywamy funkcji moveTexture
		 */
		g.drawColor(0, 1, 0.4f); //rysujemy zielone tlo
		
		
		
		g.clearTransformations(); //nazlezy wywolac za kazdym razem jesli przenosimy lub obracamy tekstury PRZED
		g.moveTexture(100, 100); //oznacza ze nastepna rysowana tekstura bedzie w punkcie 100,100
		g.drawRect(rectVert);
		
		g.clearTransformations(); //rysujemy co innego wiec czyscimy przeniesienie
		g.moveTexture(250, 150);
		g.rotateTexture(90);
		/*
		 * move i rotate sa wykonywane w odwrotnej kolejnosci wywolania, co oznacza,
		 * ze najpierw obrazek zostanie obrocony o 90 stopni a potem przeniesiony na 25,150
		 * ZAWSZE nalezy to robic w tej kolejnosci
		 */
		g.drawTexture(troll, trollVert);;
		
		
	}

	@Override
	public void pause() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void resume() {
		/*
		 * Tekstury nalezy wczytywac w metodzie resume poniewaz po kazdym zablokowaniu telefonu
		 * itp zostaja one wyrzucone z pamieci
		 * korzystamy z obiektu TextureGL
		 */
		
		troll = new TextureGL(game, "troll.png" );//nazwa pliku graficznego w katalogu ASSETS
		g.setTextureTransparentBackground(); //tlo KAZDEJ tekstury bedzie prezroczyste
		
	}

	@Override
	public void dispose() {
		// TODO Auto-generated method stub
		
	}

}
